WebSockets একটি আধুনিক কমিউনিকেশন প্রোটোকল যা ক্লায়েন্ট এবং সার্ভারের মধ্যে পূর্ণ-ডুপ্লেক্স (full-duplex) যোগাযোগ স্থাপন করতে ব্যবহৃত হয়। এর মাধ্যমে একবার কানেকশন স্থাপন হওয়ার পর, সার্ভার এবং ক্লায়েন্ট একে অপরকে সরাসরি এবং দ্রুত ডেটা আদান-প্রদান করতে সক্ষম হয়। WebSockets মূলত Web, IoT, গেমিং, স্টক মার্কেট ট্র্যাকিং, এবং রিয়েল-টাইম অ্যাপ্লিকেশনগুলির জন্য একটি শক্তিশালী প্রযুক্তি হিসেবে পরিচিত।
WebSockets হল একটি প্রোটোকল যা HTTP প্রোটোকলের উপরে কাজ করে এবং একটি স্থায়ী সংযোগ তৈরি করে যা একবার স্থাপন হলে ক্লায়েন্ট এবং সার্ভারের মধ্যে তথ্য এক্সচেঞ্জ করতে পারে। WebSockets এর সাহায্যে HTTP রিকোয়েস্ট এবং রেসপন্স মডেল থেকে বের হয়ে সরাসরি কানেকশন স্থাপন করা সম্ভব হয়। এই কানেকশনটি সার্ভার এবং ক্লায়েন্টের মধ্যে উন্মুক্ত থাকে এবং কোনো একে অপরের কাছে তথ্য পাঠানো বা গ্রহণ করা যায়, যেটি HTTP প্রোটোকলের মাধ্যমে সম্ভব নয়।
WebSocket কনেকশন শুরু হয় সাধারণ HTTP হ্যান্ডশেক দ্বারা, তবে এরপর এটি একটি WebSocket কনেকশনে পরিণত হয় যা সার্ভার এবং ক্লায়েন্টের মধ্যে অর্ধেক পথ (halfway) পর্যন্ত চলতে থাকে। WebSockets এর সবচেয়ে বড় সুবিধা হল, এটি একাধিক মেসেজ পাঠানোর জন্য অতিরিক্ত HTTP হেডার বা সেশন ব্যবস্থাপনা ছাড়াই কাজ করে।
WebSockets এর কার্যপ্রণালী মোটামুটি নিম্নরূপ:
WebSockets সাধারণত যেসব অ্যাপ্লিকেশনে রিয়েল-টাইম কমিউনিকেশন প্রয়োজন সেখানে ব্যবহৃত হয়। এর কিছু প্রধান ব্যবহার ক্ষেত্র:
ASP.NET Core-এ WebSockets ব্যবহার করার জন্য প্রথমে আপনাকে কিছু কনফিগারেশন করতে হবে। এখানে একটি সিম্পল উদাহরণ দেখানো হলো:
Startup.cs ফাইলে WebSockets কনফিগার করা
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
// WebSockets সক্রিয় করা
app.UseWebSockets();
app.UseEndpoints(endpoints =>
{
endpoints.MapGet("/ws", async context =>
{
if (context.WebSockets.IsWebSocketRequest)
{
var webSocket = await context.WebSockets.AcceptWebSocketAsync();
// WebSocket ইন্টারঅ্যাকশন পরিচালনা করতে কোড
}
else
{
context.Response.StatusCode = 400;
}
});
});
}
WebSocket ইন্টারঅ্যাকশন:
WebSocket কানেকশনের পর, সার্ভার এবং ক্লায়েন্টের মধ্যে ডেটা ট্রান্সফার করা সম্ভব।
var buffer = new byte[1024 * 4];
WebSocketReceiveResult result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
await webSocket.SendAsync(new ArraySegment<byte>(buffer, 0, result.Count), WebSocketMessageType.Text, true, CancellationToken.None);
বৈশিষ্ট্য | WebSockets | HTTP Polling | Long Polling |
---|---|---|---|
যোগাযোগ টাইপ | পূর্ণ-ডুপ্লেক্স (Full-duplex) | একমুখী (Unidirectional) | একমুখী (Unidirectional) |
কানেকশন টাইপ | স্থায়ী কানেকশন (Persistent connection) | বারবার নতুন কানেকশন (New connections each time) | স্থায়ী কানেকশন (Persistent connection) |
প্রযুক্তি | WebSocket প্রোটোকল (WebSocket protocol) | HTTP প্রোটোকল (HTTP protocol) | HTTP প্রোটোকল (HTTP protocol) |
দ্রুততা | দ্রুত (Fast) | ধীর (Slow) | ধীর (Slow) |
ব্যবহার | রিয়েল-টাইম অ্যাপ্লিকেশন (Real-time applications) | সাধারণ ওয়েব পেজ লোড (General web page load) | কিছু রিয়েল-টাইম অ্যাপ্লিকেশন (Some real-time apps) |
WebSockets একটি শক্তিশালী এবং দ্রুত যোগাযোগ প্রোটোকল যা ক্লায়েন্ট এবং সার্ভারের মধ্যে পূর্ণ-ডুপ্লেক্স এবং স্থায়ী কানেকশন প্রদান করে। এটি বিশেষ করে রিয়েল-টাইম অ্যাপ্লিকেশনগুলির জন্য উপযুক্ত, যেমন চ্যাট অ্যাপ্লিকেশন, লাইভ স্ট্যাটাস আপডেট, গেমস, এবং IoT ডিভাইসের মধ্যে যোগাযোগ। WebSockets ব্যবহার করে, ডেটা দ্রুত এবং কম লেটেন্সি সহ আদান-প্রদান করা যায়, যা HTTP প্রোটোকলের তুলনায় অনেক বেশি কার্যকরী।
common.read_more